package com.um.springboot.starter.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author 邓南辉
 * 日期 2023/2/6
 * 版权所有 广州优匠科技有限公司
 */
@Slf4j
public class UMBeanUtils {

    /**
     * 复制一个对象
     * @param source
     * @param clazz
     * @param <V>
     * @return
     */
    public static <V> V copyBean(Object source, Class<V> clazz) {
        /** 创建目标对象 实现属性拷贝*/
        V result = null;
        try {
            result = clazz.newInstance();
            /** 拷贝*/
            BeanUtils.copyProperties(source, result);
        } catch (Exception e) {
            log.warn("", e);
        }
        return result;
    }

    /**
     * 复制集合
     * @param list
     * @param clazz
     * @param <O>
     * @param <V>
     * @return
     */
    public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
        /** 创建目标对象 实现属性拷贝*/
        return list.stream()
                .map(o -> copyBean(o, clazz))
                .collect(Collectors.toList());
    }
}
